The Session Initiation Protocol (SIP) is an Internet protocol performing application layer signaling for establishing, modifying, and terminating multimedia sessions between SIP-enabled applications. The SIP protocol is increasingly used for providing multimedia applications (e.g., Internet telephony, conferencing, presence notification, event notification, instant messaging, gaming, and like applications). The SIP protocol is used in many SIP network elements (e.g., SIP client devices, SIP proxy servers, SIP application servers, and the like) which must process SIP messages (e.g., in order to determine a next action) in accordance with various real-time message processing constraints. The SIP network element performance is an important factor in SIP network cost, and efficient SIP message processing is critical for SIP network element performance.
The SIP message format, which includes a sequence of ASCII characters, is defined in various Internet Engineering Task Force (IETF) Requests For Comment (RFCs). In particular, according to RFC 3261, SIP messages include one command line followed by one or more header fields, where each header field includes a header field name and a header field value. The RFC 3261 defines forty-five standardized SIP message header field names (e.g., From, To, Call-Id, and the like), as well as a number of shorthand variations of a portion of the SIP message header field names. Furthermore, several other IETF RFC SIP extension documents define additional SIP message header field names.
The SIP network elements must parse SIP messages to recognize the header fields in order to extract the associated SIP message header values associated with the SIP message header names. Since SIP header names are case-insensitive, SIP message parsers must be able to recognize SIP header names in every possible combination of uppercase and lowercase letters. For this and like reasons, the parsing of SIP messages to recognize SIP message header fields imposes a significant load of SIP network elements (e.g., studies indicate that SIP message parsing may constitute upwards of thirty percent of the total processing load of SIP network elements).
A number of SIP message parsing approaches are currently used for identifying SIP message header field names. In a first approach, incoming SIP messages are translated into a canonical form (e.g., converting all characters to uppercase or lowercase letters). In a second approach, each character in the SIP header field name is processed for determining whether the character is an uppercase or lowercase letter. In a third approach, hash tables are used for recognizing SIP header field names. Disadvantageously, existing SIP message parsing approaches require additional processing steps in order to recognize SIP message header names, thereby adding significant overhead to SIP message parsing processing.